Autogenerated HTML docs for v2.26.2-266-ge8703 
diff --git a/git-rebase.txt b/git-rebase.txt index f7a6033..bed500f 100644 --- a/git-rebase.txt +++ b/git-rebase.txt 
@@ -277,20 +277,51 @@ 	Other options, like --exec, will use the default of drop unless 	-i/--interactive is explicitly specified.  + -Note that commits which start empty are kept, and commits which are -clean cherry-picks (as determined by `git log --cherry-mark ...`) are -always dropped. +Note that commits which start empty are kept (unless --no-keep-empty +is specified), and commits which are clean cherry-picks (as determined +by `git log --cherry-mark ...`) are detected and dropped as a +preliminary step (unless --reapply-cherry-picks is passed).  +  See also INCOMPATIBLE OPTIONS below.   +--no-keep-empty::  --keep-empty:: -	No-op. Rebasing commits that started empty (had no change -	relative to their parent) used to fail and this option would -	override that behavior, allowing commits with empty changes to -	be rebased. Now commits with no changes do not cause rebasing -	to halt. +	Do not keep commits that start empty before the rebase +	(i.e. that do not change anything from its parent) in the +	result. The default is to keep commits which start empty, +	since creating such commits requires passing the --allow-empty +	override flag to `git commit`, signifying that a user is very +	intentionally creating such a commit and thus wants to keep +	it.  + -See also BEHAVIORAL DIFFERENCES and INCOMPATIBLE OPTIONS below. +Usage of this flag will probably be rare, since you can get rid of +commits that start empty by just firing up an interactive rebase and +removing the lines corresponding to the commits you don't want. This +flag exists as a convenient shortcut, such as for cases where external +tools generate many empty commits and you want them all removed. ++ +For commits which do not start empty but become empty after rebasing, +see the --empty flag. ++ +See also INCOMPATIBLE OPTIONS below. + +--reapply-cherry-picks:: +--no-reapply-cherry-picks:: +	Reapply all clean cherry-picks of any upstream commit instead +	of preemptively dropping them. (If these commits then become +	empty after rebasing, because they contain a subset of already +	upstream changes, the behavior towards them is controlled by +	the `--empty` flag.) ++ +By default (or if `--no-reapply-cherry-picks` is given), these commits +will be automatically dropped. Because this necessitates reading all +upstream commits, this can be expensive in repos with a large number +of upstream commits that need to be read. ++ +`--reapply-cherry-picks` allows rebase to forgo reading all upstream +commits, potentially improving performance. ++ +See also INCOMPATIBLE OPTIONS below.    --allow-empty-message:: 	No-op. Rebasing commits with an empty message used to fail @@ -354,9 +385,12 @@    -S[<keyid>]::  --gpg-sign[=<keyid>]:: +--no-gpg-sign:: 	GPG-sign commits. The `keyid` argument is optional and 	defaults to the committer identity; if specified, it must be -	stuck to the option without a space. +	stuck to the option without a space. `--no-gpg-sign` is useful to +	countermand both `commit.gpgSign` configuration variable, and +	earlier `--gpg-sign`.    -q::  --quiet:: @@ -587,8 +621,9 @@  * --preserve-merges  * --interactive  * --exec - * --keep-empty + * --no-keep-empty  * --empty= + * --reapply-cherry-picks  * --edit-todo  * --root when used in combination with --onto   @@ -605,7 +640,7 @@  -----------------------    git rebase has two primary backends: apply and merge. (The apply -backend used to known as the 'am' backend, but the name led to +backend used to be known as the 'am' backend, but the name led to  confusion as it looks like a verb instead of a noun. Also, the merge  backend used to be known as the interactive backend, but it is now  used for non-interactive cases as well. Both were renamed based on @@ -620,12 +655,15 @@  also drops commits that become empty and has no option for controlling  this behavior.   -The merge backend keeps intentionally empty commits. Similar to the -apply backend, by default the merge backend drops commits that become -empty unless -i/--interactive is specified (in which case it stops and -asks the user what to do). The merge backend also has an ---empty={drop,keep,ask} option for changing the behavior of handling -commits that become empty. +The merge backend keeps intentionally empty commits by default (though +with -i they are marked as empty in the todo list editor, or they can +be dropped automatically with --no-keep-empty). + +Similar to the apply backend, by default the merge backend drops +commits that become empty unless -i/--interactive is specified (in +which case it stops and asks the user what to do). The merge backend +also has an --empty={drop,keep,ask} option for changing the behavior +of handling commits that become empty.    Directory rename detection  ~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1002,7 +1040,8 @@  'subsystem' did.    In that case, the fix is easy because 'git rebase' knows to skip -changes that are already present in the new upstream. So if you say +changes that are already present in the new upstream (unless +`--reapply-cherry-picks` is given). So if you say  (assuming you're on 'topic')  ------------  $ git rebase subsystem